package system

import (
	"server/common/dto/response"
	"server/core"
	serviceRequest "server/service/dto/request"
	"server/service/v1/system"

	"github.com/gin-gonic/gin"
)

type UserRoleHandler struct {
	UserRoleService system.UserRoleService
}

func NewUserRoleHandlerApp(service *system.UserRoleService) *UserRoleHandler {
	return &UserRoleHandler{
		UserRoleService: *service,
	}
}

// @Summary 创建用户角色信息
// @Tags 用户角色管理
// @Accept json
// @Produce json
// @Param data body request.CreateOrModifyUserRoleRequest true "创建用户角色信息请求参数"
// @Success 200 {object} response.Response "成功"
// @Failure 400 {object} response.Response "失败"
// @Router /api/v1/user_role/create [post]
func (urh *UserRoleHandler) CreateUserRoleInfoHandler(ctx *gin.Context) {
	var createRequest serviceRequest.CreateOrModifyUserRoleRequest
	if !core.ValidateParams(ctx, &createRequest) {
		return
	}
	err := urh.UserRoleService.CreateUserRoleInfoService(&createRequest)
	if err != nil {
		response.FailedWithCode(ctx, err.Code)
		return
	}
	response.SuccessNoData(ctx)
}

// @Summary 删除用户角色信息
// @Tags 用户角色管理
// @Accept json
// @Produce json
// @Param id path string true "删除用户角色信息请求参数"
// @Success 200 {object} response.Response "成功"
// @Failure 400 {object} response.Response "失败"
// @Router /api/v1/user_role/delete/{id} [delete]
func (urh *UserRoleHandler) DeleteUserRoleInfoHandler(ctx *gin.Context) {
	id := ctx.Param("id")
	if !core.ValidateParams(ctx, &id) {
		return
	}
	responseData, err := urh.UserRoleService.DeleteUserRoleInfoService(id)
	if err != nil {
		response.FailedWithCode(ctx, err.Code)
		return
	}
	response.Success(ctx, responseData)
}

// @Summary 修改用户角色信息
// @Tags 用户角色管理
// @Accept json
// @Produce json
// @Param data body request.CreateOrModifyUserRoleRequest true "修改用户角色信息请求参数"
// @Success 200 {object} response.Response "成功"
// @Failure 400 {object} response.Response "失败"
// @Router /api/v1/user_role/modify [put]
func (urh *UserRoleHandler) ModifyUserRoleInfoHandler(ctx *gin.Context) {
	var modifyRequest serviceRequest.CreateOrModifyUserRoleRequest
	if !core.ValidateParams(ctx, &modifyRequest) {
		return
	}
	responseData, err := urh.UserRoleService.ModifyUserRoleInfoService(&modifyRequest)
	if err != nil {
		response.FailedWithCode(ctx, err.Code)
		return
	}
	response.Success(ctx, responseData)
}

// @Summary 获取用户角色详情
// @Tags 用户角色管理
// @Accept json
// @Produce json
// @Param id path string true "获取用户角色详情请求参数"
// @Success 200 {object} response.Response "成功"
// @Failure 400 {object} response.Response "失败"
// @Router /api/v1/user_role/info/{id} [get]
func (mh *UserRoleHandler) GetUserRoleInfoHandler(ctx *gin.Context) {

}

// @Summary 获取用户角色列表
// @Tags 用户角色管理
// @Accept json
// @Produce json
// @Param name query string true "用户角色名称"
// @Param code query string true "用户角色代码"
// @Success 200 {object} response.Response "成功"
// @Failure 400 {object} response.Response "失败"
// @Router /api/v1/user_role/list [get]
func (mh *UserRoleHandler) GetUserRoleListHandler(ctx *gin.Context) {

}

// @Summary 获取用户角色分页列表
// @Tags 用户角色管理
// @Accept json
// @Produce json
// @Param page query int true "页码"
// @Param size query int true "每页大小"
// @Param name query string true "用户角色名称"
// @Param code query string true "用户角色代码"
// @Success 200 {object} response.Response "成功"
// @Failure 400 {object} response.Response "失败"
// @Router /api/v1/user_role/page [get]
func (mh *UserRoleHandler) GetUserRolePageHandler(ctx *gin.Context) {

}
